使用 Java 将多个文件压缩成一个压缩文件
一、内容
①使用 Java 将多个文件打包压缩成一个压缩文件;
②主要使用 java.io 下的类
二、源代码:ZipMultiFile.java
1 package cn.com.zfc.day018;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileOutputStream;
6 import java.io.IOException;
7 import java.util.zip.ZipEntry;
8 import java.util.zip.ZipOutputStream;
9
10 /**
11 * @describe 压缩多个文件
12 * @author zfc
13 * @date 2018年1月11日 下午8:34:00
14 */
15 public class ZipMultiFile {
16
17 public static void main(String[] args) {
18 File[] srcFiles = { new File("E:\\母亲.mp4"), new File("E:\\飞机.pdf"), new File("E:\\家里密码.txt") };
19 File zipFile = new File("E:\\ZipFile.zip");
20 // 调用压缩方法
21 zipFiles(srcFiles, zipFile);
22 }
23
24 public static void zipFiles(File[] srcFiles, File zipFile) {
25 // 判断压缩后的文件存在不,不存在则创建
26 if (!zipFile.exists()) {
27 try {
28 zipFile.createNewFile();
29 } catch (IOException e) {
30 e.printStackTrace();
31 }
32 }
33 // 创建 FileOutputStream 对象
34 FileOutputStream fileOutputStream = null;
35 // 创建 ZipOutputStream
36 ZipOutputStream zipOutputStream = null;
37 // 创建 FileInputStream 对象
38 FileInputStream fileInputStream = null;
39
40 try {
41 // 实例化 FileOutputStream 对象
42 fileOutputStream = new FileOutputStream(zipFile);
43 // 实例化 ZipOutputStream 对象
44 zipOutputStream = new ZipOutputStream(fileOutputStream);
45 // 创建 ZipEntry 对象
46 ZipEntry zipEntry = null;
47 // 遍历源文件数组
48 for (int i = 0; i < srcFiles.length; i++) {
49 // 将源文件数组中的当前文件读入 FileInputStream 流中
50 fileInputStream = new FileInputStream(srcFiles[i]);
51 // 实例化 ZipEntry 对象,源文件数组中的当前文件
52 zipEntry = new ZipEntry(srcFiles[i].getName());
53 zipOutputStream.putNextEntry(zipEntry);
54 // 该变量记录每次真正读的字节个数
55 int len;
56 // 定义每次读取的字节数组
57 byte[] buffer = new byte[1024];
58 while ((len = fileInputStream.read(buffer)) > 0) {
59 zipOutputStream.write(buffer, 0, len);
60 }
61 }
62 zipOutputStream.closeEntry();
63 zipOutputStream.close();
64 fileInputStream.close();
65 fileOutputStream.close();
66 } catch (IOException e) {
67 e.printStackTrace();
68 }
69
70 }
71 }
![](https://images2017.cnblogs.com/blog/1028438/201801/1028438-20180111211753801-986384720.png)
三、运行结果
![](https://images2017.cnblogs.com/blog/1028438/201801/1028438-20180111212034644-1461896169.png)
|